#ifndef TCPSERVER_H
#define TCPSERVER_H
#include<QTcpServer>
#include<QString>
#include<QObject>
#include<QWebSocket>
#include<QRunnable>
#include<QMap>
#include<QObject>
#include<QThread>
#include<QTimer>
#include"TOALocalization.h"
enum SendContent{
    DEL,//断开连接
    CONNECT//连接成功
};

class TcpServer:public QThread{
    Q_OBJECT
private:
    QTcpServer* mTcpServer;
    QMap<QTcpSocket*,int> sockets;
    QHostAddress ip;//监听IP
    int port;//监听端口
    // Localization
    TOALocalization* localization;
public:
    TcpServer(QString ip,int port);//构造函数
    ~TcpServer();//析构函数
    void mStart();//开始运行
    void newClient();//新连接
    void disconnected(QTcpSocket* socket);//断开连接
    void readEvent(QTcpSocket* socket);//读事件
    void sendEvent(QByteArray jsonCont);//写事件
    void run() override;//实现Run方法
    void getKV(QString& s,int &begin,QString &key,QString &value);
    // void Dijkstra(QString &begin,QString &end);
    double getDistance(QVector<double>& v1,QVector<double>& v2);
    void dateProcess(QMap<QString,QString> m, QString id);
    void dateProcess(const QString &message);
    void processData(QString id);

signals:
    void sendWebSocket(QString s);//通过WebSocket向山海鲸发送的内容
    void sendM(QString s);//将子线程读到的内容传给主线程
    void sendC(QString s,SendContent t);//将建立连接TCP的客户端传到主线程
};
#endif // TCPSERVER_H
